package cn.hesion.array;

public class Array {

    int[] array;
    int size;

    public static void main(String[] args) {
        Array array = new Array(10);
        array.insert(0,1);
        array.insert(1,3);
        array.insert(2,2);
        array.insert(3,1);
        array.insert(2,3);
        array.print();

    }

    public Array(int capacity) {
        array = new int[capacity];
    }

    public void insert(int index, int data) {
        // 对index的边界情况进行判断 没输入正数，输入的数比数组大
        if (index < 0 || index > size) {
            throw new ArrayIndexOutOfBoundsException("下标越界");
        }
        if (size >= array.length) {
            resize();
        }
        //倒序遍历 将要插入的位置让出来
        for (int i = size - 1; i > index; i--) {
            array[i + 1] = array[i];
        }

        //插入数据
        array[index] = data;
        //别忘了size++
        size++;


    }


    public void resize() {
        // 新建一个数组 容量是原数组的两倍
        int[] arrayNew = new int[array.length * 2];
        // 将原数组的数据拷贝到新数组来
        System.arraycopy(array, 0, arrayNew, 0, array.length);
    }

    public void print(){
        for (int i = 0; i < size; i++) {
            System.out.printf("arr[%d]=%d",i,array[i]);
            System.out.println();
        }

    }
}

